package com.company;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

public class DynamicProxy
{
    public static void main(String[] args)
    {
        //要被代理的真实对象
        Service service=new ServiceImpl();
        //要代理哪个真实对象 就把这个对象输入进去
        InvocationHandler invocationHandler=new MyInvocationHandler(service);

        //第一个参数指定加载代理对象的处理方法
        //第二个参数指定为代理对象提供服务的接口
        //第三个参数把这个代理对象关联到invocationHandler这个对象上
        Service serviceProxy=(Service)Proxy.newProxyInstance(service.getClass().getClassLoader(),service.getClass().getInterfaces(),invocationHandler);
        System.out.println(serviceProxy.sellCar("Aston Martin"));
    }
}
